Distributed computing systems take on many different forms. Unfortunately, known distributed computing systems fail to offer a general computing platform that can be used by individuals in a manner where the individual software application or data remains secured.
Consider for example distributed computing systems that employ parallel processing using “public” computers. Typically, a user installs a copy of a dedicated parallel processing software application on their computer. The application accesses data on or communicates with a centralized system to crunch a data set. Such computer systems are useful for dedicated projects, especially where there are large data sets to be analyzed. However, the systems do not lend themselves to public use nor do the systems offer methods of securing an application. Example projects that use public computers for parallel processing include the search for extraterrestrial life by SETI@Home, the modeling of protein folding by Folding@Home, or the search for new, larger prime numbers by the Great Internet Mersenne Prime Search (GIMPS). These projects, other projects, or their infrastructure (e.g., BOINC offered by University of California at Berkeley; http://boinc.berkeley.edu/) fail to provide a general computing platform that is secure.
Other distributed computing platforms offer some level of security by offering a computing architecture that merely keeps an application local to the computing environment. Rather than copying a software application across multiple remote, public computers, a software application is run on multiple processors within a computer. Such systems can comprise multiple computers networked together (e.g., Beowulf clusters or based on Parallel Virtual Machine), or can comprise a single computer that incorporates multiple processors. There are numerous examples of computing architectures that provide for local computation.
One example of a distributed computing platform includes U.S. Pat. No. 5,887,138 to Hagersten et al. titled “Multiprocessing Computer System Employing Local and Global Address Spaces and COMA and NUMA Access Modes”, filed on Jul. 1, 1996. Hagersten describes methods of accessing a shared memory where a physical memory location is remote to a node.
Another example includes U.S. Pat. No. 7,174,381 to Gulko et al. titled “Parallel Computing System, Method, and Architecture”, filed on Dec. 4, 2002. Gulko discusses a parallel computing system where an application is execution on distributed computing resources and the execution supervised by server software.
Yet another example includes U.S. Pat. No. 7,376,693 to Neiman et al. titled “System Architecture for Distributed Computing and Method of Using the System”, filed on Jun. 20, 2004. Neiman discloses that a portion of an application is executed by a local computer and other portions are executed by remote computers.
Yet still another example includes U.S. Pat. No. 7,401,333 to Vandeweerd et al. titled “Array of Parallel Programmable Processing Engines and Deterministic Method of Operating the Same”, filed on Aug. 8, 2001. In the Vandeweerd approach, processing engines are interconnected via network in a system-on-a-chip solution.
Still another example includes U.S. Patent Publication 2008/104367 to Blumrick et al. titled “Collective Network for Computer Structures”, filed on Jul. 18, 2005. Blumrick contemplates a network of ASIC nodes where each node can include a router device for sending packets to and from each node.
Although the above computing systems have utility in their respective environments, they still fail to address security concerns relating to an executing application. In all the above examples, and other known examples, applications executing on the computing system remain localized or are subject to compromise. The computing system might be able to protect data via encryption of other known techniques; however, the computing systems fail to adequately protect an executing application. Should a computer or computing facility become comprised, the application itself can be accessed from the computer system memory and deconstructed. Ideally, a distributed computing system would protect a software application during execution while also offering a general computing platform accessible to the public.
It has yet to be appreciated that a general purpose distributed computing platform can be formed by allocating resources from networking infrastructure. Latent processors or latent cores on processors located in networking infrastructure can be combined with a system memory allocated from unused memory in the infrastructure to form a parallel computing engine. A software application can be deployed in a secure fashion by encrypting the application data or by distributing portions of the application across the nodes of the networking infrastructure. Furthermore, the portions of the application can be striped across the networking nodes to ensure that no one node has a complete copy of the application.
Thus, there is still a need for ways to leverage latency computing capabilities to for a distributed computing platform and to execute a software application on the platform.